package cn.yinyu.queue.module.ecg.dal.mysql.devmanage;

import java.util.*;

import cn.yinyu.queue.framework.common.pojo.PageResult;
import cn.yinyu.queue.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.yinyu.queue.framework.mybatis.core.mapper.BaseMapperX;
import cn.yinyu.queue.module.ecg.dal.dataobject.devmanage.DevModelDO;
import org.apache.ibatis.annotations.Mapper;
import cn.yinyu.queue.module.ecg.controller.admin.devmanage.vo.*;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 设备型号 Mapper
 *
 * @author majianbo
 */
@Mapper
public interface DevModelMapper extends BaseMapperX<DevModelDO> {

    default PageResult<DevModelDO> selectPage(DevModelPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<DevModelDO>()
                .eqIfPresent(DevModelDO::getCategory, reqVO.getCategory())
                .eqIfPresent(DevModelDO::getBrand, reqVO.getBrand())
                .eqIfPresent(DevModelDO::getModel, reqVO.getModel())
                .betweenIfPresent(DevModelDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(DevModelDO::getId));
    }

    @Select("<script> " +
            " select distinct brand from yy_queue.device_model " +
            " <where> deleted = 0 " +
            "   <if test=\"category != null and category != ''\"> " +
            "     and category = #{category} " +
            "   </if> " +
            " </where> " +
            "</script>")
    List<String> getBrandByCategory(@Param("category") String category);

    @Select("<script> " +
            " select distinct brand from yy_queue.device_model " +
            " <where> deleted = 0 " +
            "   <if test=\"category != null and category != ''\"> " +
            "     and category = #{category} " +
            "   </if> " +
            "   <if test=\"brand != null and brand != ''\"> " +
            "     and brand = #{brand} " +
            "   </if> " +
            " </where> " +
            "</script>")
    List<String> getModelByCategoryBrand(@Param("category") String category, @Param("brand") String brand);

}